/*
 * Sistema Gestor de Proyectos, Version Alpha 1.01.22, Sistema Modular para la Gestión de Proyectos
 * Copyright (C) 2011 Marco Antonio Ramírez Sánchez
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */
package Clases_auxiliares;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class conexion {

    private String url;
    private Connection con;
    private Statement stmt;

    /**
     * Funcion que establece conexion con la base de datos
     * @throws ClassNotFoundException
     * @throws SQLException 
     */
    public void establecer_conexion() throws ClassNotFoundException, SQLException {
        /*Variable para almacenar la URL de conexión a nuestra Base de Datos, si esta estuviera en otra máquina, necesitariamos estar registrados en ella y contar con su IP*/
        url = "jdbc:postgresql://10.160.15.49:5433/test_tbu";
        //Acceso al Driver
        Class.forName("org.postgresql.Driver");
        //La conexión con los parámetros necesarios
        con = DriverManager.getConnection(url, "postgres", "vivalahelbig20");
        //Abrimos la conexión y la iniciamos
        stmt = con.createStatement();
    }

    /**
     * Funcion que ejecuta solo comandos "select"
     * @param sql String que tiene el comando sql
     * @return Un ResultSet con los resultados obtenidos de la consulta
     * @throws SQLException 
     */
    public ResultSet solo_select(String sql) throws SQLException {
        return stmt.executeQuery(sql);
    }

    /**
     * Funcion que ejecuta solo comandos insert
     * @param sql String que tiene el comando sql
     * @return Retorna falso si se ejecuto correctamente, sino retorna true
     * @throws SQLException 
     */
    public boolean solo_insert(String sql) throws SQLException {
        return stmt.execute(sql);
    }

    /**
     * Funcion que ejecuta solo comandos update
     * @param sql String que tiene el comando sql
     * @return Retorna un entero que dan a conocer el numero de filas afectadas por el update
     * @throws SQLException 
     */
    public int solo_update(String sql) throws SQLException {
        return stmt.executeUpdate(sql);
    }

    /**
     * Funcion para terminar la conexion con la base de datos
     * @throws SQLException 
     */
    public void terminar_conexion() throws SQLException {
        stmt.close();
        con.close();
    }
}